package pro.cherish.knowledgescattered.configFile.jasypt;

import com.ulisesbocchio.jasyptspringboot.environment.StandardEncryptableEnvironment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.builder.SpringApplicationBuilder;
import sun.tools.jar.resources.jar;

/**
 * @author 创建人：cherish
 * @version 版本号：V1.0
 * <p>
 * ***************************修订记录************************************
 * 2019-12-01 cherish 创建该类功能。
 * **********************************************************************
 * </p>
 * @ClassName 类名：JasyptApplication
 * @Description 功能说明：Jasypt加密配置
 * <p>
 * TODO
 * </p>
 * **********************************************************************
 * @date 创建日期： 2019-12-01 cherish
 */
@Slf4j
public class JasyptApplication {
    //1.启动类启动方式修改。
    public static void main(String[] args) throws Exception {
        //使用自定义环境变量 实现一些特殊场景下的加密字符解密操作
        //若无额外的xml引入文件需要解密时，可直接使用SpringApplication.run(JasyptApplication.class, args);即可
        //若想在引入的xml中使用，需要加入环境变量，如以下模式
        new SpringApplicationBuilder().environment(new StandardEncryptableEnvironment())
                .sources(JasyptApplication.class).run(args);
        log.info("spring-boot-jasypt-chapter37服务启动!");
    }
//    盐值应该放在系统属性、命令行或是环境变量来使用，而不是放在配置文件。
//    1、命令行
//     java -jar xxx.jar --jasypt.encryptor.password=xxx &
/**
 * 2、环境变量示例
 * # 打开/etc/profile文件
 * vim /etc/profile
 * # 文件末尾插入
 * export JASYPT_PASSWORD = xxxx
 *
 * 启动时
 java -jar xxx.jar --jasypt.encryptor.password=${JASYPT_PASSWORD} &
 */

/**
 * 一个bat方便使用
 * @echo off
 * set/p input=待加密的明文字符串：
 * set/p password=加密密钥(盐值)：
 * echo 加密中......
 * java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI  input=%input% password=%password% algorithm=PBEWithMD5AndDES
 * pause
 */
}
